"""
组织多个测试文件中的测试用例执行

1.maths.py
的测试文件demo.py
测试类:TestMath
2.hello.py的
测试文件testHello.py
测试类TestHello

unittest提供了TestLoader，用来加载测试用例
前面使用的addTest（），addTests（）适用于测试用例较少的情况
测试数量较多或来源于多个测试用例可以使用TestLoader中的方法来管理
"""
import unittest
import time

from testHello import *
from testdemo import *
from a2022.unittest1 import *
from HTMLTestRunner import HTMLTestRunner

if __name__ == '__main__':
    # 构建测试套件
    suite = unittest.TestSuite()
    # 构建加载器
    Loader = unittest.TestLoader()
    # 方法1：loaderTestFromName("模块名.测试类名.测试用例名")
    # suite.addTest(Loader.loadTestsFromName("testHello.TestHello"))
    # suite.addTest(Loader.loadTestsFromName("demo.TestMath"))

    # 方法2：loadTestFromTestCase(测试类名)
    # suite.addTest(Loader.loadTestsFromTestCase(TestHello))
    # suite.addTest(Loader.loadTestsFromTestCase(TestMath))
    # 方法3：loadTestsFromModule(模块名)
    # suite.addTest(Loader.loadTestsFromModule(testHello))
    # suite.addTest(Loader.loadTestsFromModule(demo))
    # 方法4：discover(目录,格式)  第二个参数格式"test*.py"   discover('.',''test*.py')

    suite.addTests(Loader.discover('C:/python/a2022/unittest1', 'testdemo.py'))

    # runner = unittest.TextTestRunner(verbosity=2)
    # runner.run(suite)
    # # 把测试结果输出到文件中
    # with open('单元测试框架应用案例.txt', 'a') as f:
    #     # 执行测试    stream输出流位置
    #     runner = unittest.TextTestRunner(stream=f, verbosity=2)
    #     runner.run(suite)
    # 把测试结果保存在html文件中
    filename = time.strftime("%Y-%m-%d-%H-%M-%S")+'测试报告'+r".html"
    with open(filename, 'w+', encoding='utf-8') as f:
        # 执行测试
        runner = HTMLTestRunner(stream=f, verbosity=2, title='测试用例执行报告', description='页面描述：这是由HTMLTestRunner生成的')
        runner.run(suite)